home *** CD-ROM | disk | FTP | other *** search
/ Visual Cafe 3 / Visual Cafe 3.ISO / Vcafe / JFC.bin / OrganicScrollBarUI.java < prev    next >
Text File  |  1998-06-30  |  6KB  |  285 lines

  1. /*
  2.  * @(#)OrganicScrollBarUI.java    1.4 98/02/02
  3.  * 
  4.  * Copyright (c) 1997 Sun Microsystems, Inc. All Rights Reserved.
  5.  * 
  6.  * This software is the confidential and proprietary information of Sun
  7.  * Microsystems, Inc. ("Confidential Information").  You shall not
  8.  * disclose such Confidential Information and shall use it only in
  9.  * accordance with the terms of the license agreement you entered into
  10.  * with Sun.
  11.  * 
  12.  * SUN MAKES NO REPRESENTATIONS OR WARRANTIES ABOUT THE SUITABILITY OF THE
  13.  * SOFTWARE, EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
  14.  * IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR
  15.  * PURPOSE, OR NON-INFRINGEMENT. SUN SHALL NOT BE LIABLE FOR ANY DAMAGES
  16.  * SUFFERED BY LICENSEE AS A RESULT OF USING, MODIFYING OR DISTRIBUTING
  17.  * THIS SOFTWARE OR ITS DERIVATIVES.
  18.  * 
  19.  */
  20.  
  21. package com.sun.java.swing.plaf.organic;
  22.  
  23. import java.awt.Component;
  24. import java.awt.Container;
  25. import java.awt.LayoutManager;
  26. import java.awt.Adjustable;
  27. import java.awt.event.AdjustmentListener;
  28. import java.awt.event.AdjustmentEvent;
  29. import java.awt.event.ActionListener;
  30. import java.awt.event.ActionEvent;
  31. import java.awt.event.MouseListener;
  32. import java.awt.event.MouseMotionListener;
  33. import java.awt.event.MouseAdapter;
  34. import java.awt.event.MouseEvent;
  35. import java.awt.Graphics;
  36. import java.awt.Dimension;
  37. import java.awt.Rectangle;
  38. import java.awt.Point;
  39. import java.awt.Insets;
  40. import java.awt.Color;
  41. import java.io.Serializable;
  42. import java.awt.IllegalComponentStateException;
  43.  
  44. import com.sun.java.swing.*;
  45. import com.sun.java.swing.event.*;
  46.  
  47. import com.sun.java.swing.plaf.*;
  48. import com.sun.java.swing.plaf.basic.BasicScrollBarUI;
  49.  
  50.  
  51. /**
  52.  * Implementation of ScrollBarUI for the Organic Look and Feel
  53.  * <p>
  54.  * Warning: serialized objects of this class will not be compatible with
  55.  * future swing releases.  The current serialization support is appropriate
  56.  * for short term storage or RMI between Swing1.0 applications.  It will
  57.  * not be possible to load serialized Swing1.0 objects with future releases
  58.  * of Swing.  The JDK1.2 release of Swing will be the compatibility
  59.  * baseline for the serialized form of Swing objects.
  60.  *
  61.  * @version 1.4 02/02/98
  62.  * @author Jeff Shapiro
  63.  */
  64. public class OrganicScrollBarUI extends BasicScrollBarUI implements MouseListener
  65. {
  66.     private static Color OrganictrackColor;
  67.     private static Color OrganictrackHighlightColor;
  68.     private static Color OrganicthumbColor;
  69.     private static Color OrganicthumbHighlightColor;
  70.  
  71.     protected static int scrollBarWidth;
  72.     protected boolean isRollover = false;
  73.  
  74.     public static ComponentUI createUI( JComponent c )
  75.     {
  76.         scrollBarWidth = ( ( Integer ) ( UIManager.get( "ScrollBar.width" ) ) ).intValue();
  77.  
  78.         return new OrganicScrollBarUI();
  79.     }
  80.  
  81.     
  82.     public void installUI( JComponent c )
  83.     {
  84.         super.installUI( c );
  85.  
  86.         c.addMouseListener( this );
  87.     }
  88.  
  89.     public void uninstallUI( JComponent c )
  90.     {
  91.         super.uninstallUI( c );
  92.  
  93.         c.removeMouseListener( this );
  94.     }
  95.  
  96.     protected void configureScrollBarColors()
  97.     {
  98.         OrganictrackColor          = UIManager.getColor("ScrollBar.track");
  99.         OrganictrackHighlightColor = UIManager.getColor("ScrollBar.trackHighlight");
  100.         OrganicthumbColor          = UIManager.getColor("ScrollBar.thumb");
  101.         OrganicthumbHighlightColor = UIManager.getColor("ScrollBar.thumbHighlight");
  102.     }
  103.  
  104.     public Dimension getPreferredSize( JComponent c )
  105.     {
  106.         if ( scrollbar.getOrientation() == JScrollBar.VERTICAL )
  107.     {
  108.         return new Dimension( scrollBarWidth, 36 );
  109.         }
  110.     else  // Horizontal
  111.     {
  112.             return new Dimension( 36, scrollBarWidth );
  113.         }
  114.     }
  115.  
  116.     /** Returns the view that represents the decrease view. 
  117.       */
  118.     protected JButton createDecreaseButton( int orientation )
  119.     {
  120.         return new OrganicScrollButton( orientation, scrollBarWidth );
  121.     }
  122.  
  123.     /** Returns the view that represents the increase view. */
  124.     protected JButton createIncreaseButton( int orientation )
  125.     {
  126.         return new OrganicScrollButton( orientation, scrollBarWidth );
  127.     }
  128.  
  129.     protected void paintTrack( Graphics g, JComponent c, Rectangle trackBounds )
  130.     {
  131.           g.setColor( OrganictrackColor );
  132.         g.fillRect( trackBounds.x, trackBounds.y,
  133.             trackBounds.width, trackBounds.height );
  134.  
  135.         if ( isRollover )
  136.     {
  137.         g.setColor( OrganictrackHighlightColor );
  138.  
  139.         if ( scrollbar.getOrientation() == JScrollBar.VERTICAL )
  140.         {
  141.             g.fillRect( trackBounds.x + 1, trackBounds.y,
  142.                 trackBounds.width, trackBounds.height );
  143.         }
  144.         else  // HORIZONTAL
  145.         {
  146.             g.fillRect( trackBounds.x, trackBounds.y + 1,
  147.                 trackBounds.width, trackBounds.height );
  148.         }
  149.     }
  150.     }
  151.  
  152.     protected void paintThumb( Graphics g, JComponent c, Rectangle thumbBounds )
  153.     {        
  154.     if ( thumbBounds.isEmpty() || !scrollbar.isEnabled() )
  155.     {
  156.         return;
  157.     }
  158.  
  159.         if ( isRollover )
  160.     {
  161.         g.setColor( OrganicthumbHighlightColor );
  162.     }
  163.     else
  164.     {
  165.         g.setColor( OrganicthumbColor );
  166.     }
  167.  
  168.     if ( scrollbar.getOrientation() == JScrollBar.VERTICAL )
  169.     {
  170.         g.fillRect( thumbBounds.x + 1, thumbBounds.y,
  171.             thumbBounds.width, thumbBounds.height );
  172.     }
  173.     else  // HORIZONTAL
  174.     {
  175.         g.fillRect( thumbBounds.x, thumbBounds.y + 1,
  176.             thumbBounds.width, thumbBounds.height );
  177.     }
  178.     }
  179.  
  180.     protected Dimension getMinimumThumbSize()
  181.     {
  182.         if ( scrollbar.getOrientation() == JScrollBar.VERTICAL )
  183.     {
  184.         return new Dimension( scrollBarWidth - 1, 16 );
  185.         }
  186.     else  // Horizontal
  187.     {
  188.             return new Dimension( 16, scrollBarWidth - 1 );
  189.         }
  190.     }        
  191.  
  192.  
  193.   /* MouseListener functions */
  194.  
  195.  
  196.     public void mouseEntered( MouseEvent e ) 
  197.     {
  198.         isRollover = true;
  199.     scrollbar.repaint();
  200.     }
  201.  
  202.     public void mouseExited( MouseEvent e )
  203.     {
  204.         isRollover = false;
  205.     scrollbar.repaint();
  206.     }
  207.  
  208.     public void mouseClicked( MouseEvent e ) {}
  209.  
  210.     public void mousePressed( MouseEvent e ) {}
  211.  
  212.     public void mouseReleased( MouseEvent e ) {}
  213.  
  214. }
  215.  
  216.  
  217.  
  218.  
  219.  
  220.  
  221.  
  222.  
  223.  
  224.  
  225.  
  226.  
  227.  
  228.  
  229.  
  230.  
  231.  
  232.  
  233.  
  234.  
  235.  
  236.  
  237.  
  238.  
  239.  
  240.  
  241.  
  242.  
  243.  
  244.  
  245.  
  246.  
  247.  
  248.  
  249.  
  250.  
  251.  
  252.  
  253.  
  254.  
  255.  
  256.  
  257.  
  258.  
  259.  
  260.  
  261.  
  262.  
  263.  
  264.  
  265.  
  266.  
  267.  
  268.  
  269.  
  270.  
  271.  
  272.  
  273.  
  274.  
  275.  
  276.  
  277.  
  278.  
  279.  
  280.  
  281.  
  282.  
  283.  
  284.  
  285.